public static ContextTableTabParentModel lookupContextParentForNonBuiltinNode(
     String sourceId, List<ContextTableTabParentModel> output) {
   ContextTableTabParentModel firstLevelNode = null;
   if (output != null && output.size() > 0) {
     for (ContextTableTabParentModel parent : output) {
       String tempSourceId = parent.getSourceId();
       if (tempSourceId != null && sourceId.equals(tempSourceId)) {
         firstLevelNode = parent;
         break;
       }
     }
   }
   return firstLevelNode;
 }
 private void removeParentModelInGroupBySource(ContextTableTabParentModel parentModel) {
   Set<String> paraNames = new HashSet<String>();
   String sourceId = parentModel.getSourceId();
   if (IContextParameter.BUILT_IN.equals(sourceId)) {
     String paraName = parentModel.getContextParameter().getName();
     paraNames.add(paraName);
   } else {
     List<ContextTabChildModel> children = parentModel.getChildren();
     if (children != null && children.size() > 0) {
       for (ContextTabChildModel child : children) {
         IContextParameter contextPara = child.getContextParameter();
         String paraName = contextPara.getName();
         paraNames.add(paraName);
       }
     }
   }
   modelManager.onContextRemoveParameter(getContextManager(), paraNames, sourceId);
 }