public List<Object> getChildren(Object node, String tableName, XSQLBluePrint bluePrint) {

    List<Object> children = XSQLODLUtils.getMChildren(node);
    List<Object> result = new LinkedList<Object>();

    for (Object child : children) {

      String odlNodeName = XSQLODLUtils.getNodeIdentiofier(child);
      if (odlNodeName == null) {
        if (child instanceof DataContainerNode) {
          List<Object> augChidlren = getChildren(child, tableName, bluePrint);
          result.addAll(augChidlren);
        }
        continue;
      }

      XSQLBluePrintNode eNodes[] = bluePrint.getBluePrintNodeByODLTableName(odlNodeName);
      if (eNodes == null) {
        continue;
      }

      boolean match = false;
      for (XSQLBluePrintNode enode : eNodes) {
        if (tableName.startsWith(enode.toString())) {
          match = true;
          break;
        }
      }

      if (!match) {
        continue;
      }

      if (child.getClass().getName().endsWith("ImmutableUnkeyedListNode")) {
        result.add(child);
      } else if (child.getClass().getName().endsWith("ImmutableContainerNode")) {
        result.add(child);
      } else if (child.getClass().getName().endsWith("ImmutableAugmentationNode")) {
        List<Object> _children = XSQLODLUtils.getMChildren(child);
        for (Object c : _children) {
          if (c.getClass().getName().endsWith("ImmutableContainerNode")) {
            result.add(c);
          }
        }
      } else if (child.getClass().getName().endsWith("ImmutableMapNode")) {
        result.addAll(XSQLODLUtils.getMChildren(child));
      } else {
        XSQLAdapter.log("Missed Node Data OF Type=" + child.getClass().getName());
      }
    }
    return result;
  }