public String expand(MssCFGenContext genContext) { String retval; final String S_ProcName = "CFGenKbGelReference.expand() "; String referenceName = getRequiredReferenceName(); ICFGenKbGenItemObj genItem = genContext.getGenEngine().findContextItem(genContext, referenceName); if (genItem == null) { genContext .getGenEngine() .getLog() .message( "Could not resolve reference method \"" + referenceName + "\". \"" + "$" + getRequiredSourceText() + "$" + "\" is invalid"); return (null); } if (!(genItem instanceof MssCFGenReferenceObj)) { genContext .getGenEngine() .getLog() .message( "Resolution of reference method \"" + referenceName + "\" returned a " + genItem.getClass().getPackage().getName() + "." + genItem.getClass().getName() + ", not a MssCFGenReferenceObj. \"" + "$" + getRequiredSourceText() + "$" + "\" is invalid"); return (null); } MssCFGenReferenceObj reference = (MssCFGenReferenceObj) genItem; ICFLibAnyObj refDef = reference.dereference(genContext); if (refDef == null) { genContext .getGenEngine() .getLog() .message( "Resolution of reference \"" + referenceName + "\" returned null. \"" + "$" + getRequiredSourceText() + "$" + "\" is invalid"); return (null); } MssCFGenContext refContext = genContext.buildRefContext(refDef); if (refContext == null) { throw new RuntimeException(S_ProcName + "buildRefContext() failed"); } ICFGenKbGelInstructionObj remainder = getOptionalChildrenRemainder(); String expansion; if (remainder == null) { expansion = ""; } else { expansion = remainder.expand(refContext); } return (expansion); }