opendap/src/main/java/ucar/nc2/dods/DODSNetcdfFile.java
Variable addVariable(Group parentGroup, Structure parentStructure, DodsV dodsV) throws IOException {
    Variable v = makeVariable(parentGroup, parentStructure, dodsV);
    if (v != null) {
      addAttributes(v, dodsV);
      if (parentStructure != null)
        parentStructure.addMemberVariable(v);
      else {
        parentGroup = computeGroup(v.getDODSName(), v, parentGroup);
        parentGroup.addVariable(v);
      }
      dodsV.isDone = true;
    }
    return v;
  }
Variable addVariable(Group parentGroup, Structure parentStructure, DodsV dodsV) throws IOException {
    Variable v = makeVariable(parentGroup, parentStructure, dodsV);
    if (v != null) {
      addAttributes(v, dodsV);
      if (parentStructure != null)
        parentStructure.addMemberVariable(v);
      else {
        parentGroup = computeGroup(v.getDODSName(), v, parentGroup);
        parentGroup.addVariable(v);
      }
      dodsV.isDone = true;
    }
    return v;
  }
recursively make new variables: all new variables come through here