public void locationUsage(STEntry entry, int fromContext) {
   if (entry != null) {
     currentCode.append(entry.contextualName(fromContext));
   }
 }
 public void enum_use(STEntry ste, int fromContext) {
   if (ste != null && ste.getType() instanceof EnumType)
     EnumDeclaration.generate((EnumType) (ste.getType()));
 }
 public void channel(STEntry entry) {
   IDeclarationContainer container = findEnclosingDelcarationContainer();
   if (currentCode instanceof Component) { // Usual case
     if (entry.getType() instanceof ChannelType) {
       ((IComponent) currentCode).addChannel(entry.getName(), (ChannelType) entry.getType());
     } else if (entry.getType() instanceof InterfaceType) {
       ((IComponent) currentCode).addInterface(entry.getName(), (InterfaceType) entry.getType());
     } else {
       throw new RuntimeException(
           "unknown type encountered in channel definition"
               + entry.getType().getClass().getName());
     }
   } else if (container instanceof Component) {
     if (entry.getType() instanceof ChannelType) {
       ((IComponent) container).addChannel(entry.getName(), (ChannelType) entry.getType());
     } else if (entry.getType() instanceof InterfaceType) {
       ((IComponent) container).addInterface(entry.getName(), (InterfaceType) entry.getType());
     } else {
       throw new RuntimeException(
           "unknown type encountered in channel definition"
               + entry.getType().getClass().getName());
     }
   } else if (currentCode
       instanceof
       CompilationUnit) { // this is a top level interface definition - no code generation needed
     // do nothing
   } else { // error situation
     throw new RuntimeException(
         "unknown context for channel definition" + currentCode.getClass().getName());
   }
 }