public BidirectedGraph<Node, ValueEdge<Node, Link>> run(Self self) {
   return run(IteratorUtils.toList(self.iterateDetails()));
 }
  public static void main(String[] args) {
    Self self = new ExampleSelf();
    Agent s = self.getAgent();

    Detail d = self.newDetail(s, "Mountain Bike", "Bicycle");
    d.add("gearCount", new IntegerIs(12));
    d.add("wheelDiameter", new RealIs(22));
    d.add("bicycleType", new StringIs("mountain"));

    Detail g = self.newDetail(s, "Guitar", "Guitar");

    self.newDetail(s, "Apartment", "Dwelling");

    self.newDetail(s, "Next Apartment", "Dwelling");

    Detail t = self.newDetail(s, "Twitter", "TwitterAccount");
    t.add("login", new StringIs("twitterid"));
    t.add("password", new StringIs("********"));

    try {
      POSTagger pos = new POSTagger();
      self.addVertex(new Twitter(pos));
      self.addVertex(pos);

      self.addVertex(RunEMailPanel.vrAssistanceSMTP);
    } catch (Exception ex) {
      Logger.getLogger(RunEQPanel.class.getName()).log(Level.SEVERE, null, ex);
    }

    new SwingWindow(new GraphPanel(self, self.getMemory(), null), 900, 800, true);
  }