public <X> Subgraph<X> addSubgraph(String attributeName, Class<X> type) {
    checkMutability();

    final SubgraphImpl<X> subgraph = attributeDelegate.buildSubgraph(attributeName, type);
    addNode(subgraph);
    return subgraph;
  }
  public <X> Subgraph<? extends X> addSubgraph(Attribute<T, X> attribute, Class<? extends X> type) {
    checkMutability();

    final SubgraphImpl<? extends X> subgraph = attributeDelegate.buildSubgraph(attribute, type);
    addNode(subgraph);
    return subgraph;
  }
  @SuppressWarnings("unchecked")
  public <X> Subgraph<X> addSubgraph(String attributeName) {
    checkMutability();

    final SubgraphImpl<X> subgraph = attributeDelegate.buildSubgraph(attributeName);
    addNode(subgraph);
    return subgraph;
  }