final public void component_instantiation_statement(Graph g) throws ParseException {
  String id, compId;
  Node comp;
  HashMap<String,String> map;
    id = identifier();
    jj_consume_token(151);
    compId = instantiated_unit();
          comp=g.new Node(id,library.resolve(compId));
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case GENERIC:
      generic_map_aspect();
      break;
    default:
      jj_la1[66] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PORT:
      map = port_map_aspect();
                  for (String key: map.keySet())
                  {
                    String value = map.get(key);
                    Node sig = g.searchNode(value);
                    if (sig==null)
                     {if (true) throw new ParseException("signal name unknown: " + value);}
                    int pidx = library.pinIndex(comp.type(), key);
                    int pdir = library.pinDirection(comp.type(), key);
                    log.trace("pin " + key + " of " + comp.typeName() + " : " + pidx + " dir " + pdir);
                    if (pidx==-1)
                      {if (true) throw new ParseException("pin name unknown: " + key);}
                    if (sig != null && pidx >= 0)
                    {
                      if (pdir == Library.DIR_IN)
                        g.connect(sig, -1, comp, pidx); //comp.setPredecessor(pidx,sig);
                      if (pdir == Library.DIR_OUT)
                        g.connect(comp, -1, sig, 0);
                    }
                  }
      break;
    default:
      jj_la1[67] = jj_gen;
      ;
    }
    jj_consume_token(SEMICOLON);
  }