test_class.declarator: parent
test_class.modifier: private
test_class.original_string: private ParentModel parent;
test_class.type: ParentModel
test_class.var_name: parent
test_class.file: api/src/test/java/edu/wpi/first/shuffleboard/api/tab/model/LayoutModelImplTest.java
test_class.identifier: LayoutModelImplTest
test_case.body: @Test
    public void testGetChildNotPresent() {
      LayoutModel layout = new LayoutModelImpl("Layout", parent, "List");
      String path = "/Shuffleboard/Tab/Foo";
      ComponentModel child = layout.getChild(path);
      assertNull(child);
    }
test_case.class_method_signature: LayoutModelImplTest.testGetChildNotPresent()
test_case.full_signature: @Test public void testGetChildNotPresent()
test_case.identifier: testGetChildNotPresent
test_case.invocations: getChild assertNull
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testGetChildNotPresent()
focal_class.declarator: layouts = new HashMap<>()
focal_class.modifier: private final
focal_class.original_string: private final Map<String, LayoutModel> layouts = new HashMap<>();
focal_class.type: Map<String, LayoutModel>
focal_class.var_name: layouts
focal_class.declarator: children = new HashMap<>()
focal_class.modifier: private final
focal_class.original_string: private final Map<String, ComponentModel> children = new HashMap<>();
focal_class.type: Map<String, ComponentModel>
focal_class.var_name: children
focal_class.file: api/src/main/java/edu/wpi/first/shuffleboard/api/tab/model/LayoutModelImpl.java
focal_class.identifier: LayoutModelImpl
focal_class.interfaces: implements LayoutModel
focal_class.class_method_signature: LayoutModelImpl.LayoutModelImpl(String path, ParentModel parent, String displayType)
focal_class.full_signature:   LayoutModelImpl(String path, ParentModel parent, String displayType)
focal_class.identifier: LayoutModelImpl
focal_class.parameters: (String path, ParentModel parent, String displayType)
focal_class.signature:  LayoutModelImpl(String path, ParentModel parent, String displayType)
focal_class.class_method_signature: LayoutModelImpl.LayoutModelImpl(String path, ParentModel parent, String displayType, Map<String, Object> properties)
focal_class.full_signature:   LayoutModelImpl(String path, ParentModel parent, String displayType, Map<String, Object> properties)
focal_class.identifier: LayoutModelImpl
focal_class.parameters: (String path, ParentModel parent, String displayType, Map<String, Object> properties)
focal_class.signature:  LayoutModelImpl(String path, ParentModel parent, String displayType, Map<String, Object> properties)
focal_class.class_method_signature: LayoutModelImpl.getLayout(String path, String layoutType)
focal_class.full_signature: @Override public LayoutModel getLayout(String path, String layoutType)
focal_class.identifier: getLayout
focal_class.modifiers: @Override public
focal_class.parameters: (String path, String layoutType)
focal_class.return: LayoutModel
focal_class.signature: LayoutModel getLayout(String path, String layoutType)
focal_class.class_method_signature: LayoutModelImpl.getChild(String path)
focal_class.full_signature: @Override public ComponentModel getChild(String path)
focal_class.identifier: getChild
focal_class.modifiers: @Override public
focal_class.parameters: (String path)
focal_class.return: ComponentModel
focal_class.signature: ComponentModel getChild(String path)
focal_class.class_method_signature: LayoutModelImpl.addChild(ComponentModel component)
focal_class.full_signature: @Override public void addChild(ComponentModel component)
focal_class.identifier: addChild
focal_class.modifiers: @Override public
focal_class.parameters: (ComponentModel component)
focal_class.return: void
focal_class.signature: void addChild(ComponentModel component)
focal_class.class_method_signature: LayoutModelImpl.getChildren()
focal_class.full_signature: @Override public Map<String, ComponentModel> getChildren()
focal_class.identifier: getChildren
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Map<String, ComponentModel>
focal_class.signature: Map<String, ComponentModel> getChildren()
focal_class.superclass: extends ComponentModelImpl
focal_method.body: @Override
    public ComponentModel getChild(String path) {
      if (children.containsKey(path)) {
        return children.get(path);
      }
      return layouts.values().stream()
          .map(l -> l.getChild(path))
          .filter(Objects::nonNull)
          .findFirst()
          .orElse(null);
    }
focal_method.class_method_signature: LayoutModelImpl.getChild(String path)
focal_method.full_signature: @Override public ComponentModel getChild(String path)
focal_method.identifier: getChild
focal_method.invocations: containsKey get orElse findFirst filter map stream values getChild
focal_method.modifiers: @Override public
focal_method.parameters: (String path)
focal_method.return: ComponentModel
focal_method.signature: ComponentModel getChild(String path)