docs: public String getFullPackage(CodeType codeType, String packageName)
      {
          if (packageName == null)
              packageName = DBConstants.BLANK;
          if (packageName.length() > 0)
              if (!packageName.startsWith("."))
                  return packageName;
          
          Record programControl = null;
          if (this.getRecordOwner() != null)
              programControl = (Record)this.getRecordOwner().getRecord(ProgramControl.PROGRAM_CONTROL_FILE);
          Record programControlTemp = null;
          if (programControl == null)
              programControl = programControlTemp = new ProgramControl(this.findRecordOwner());
          
          String startPackage = DBConstants.ROOT_PACKAGE.substring(0, DBConstants.ROOT_PACKAGE.length() - 1);
          if (codeType == CodeType.THICK)
              if (!programControl.getField(ProgramControl.PACKAGE_NAME).isNull())
          {
              if (programControl.getField(ProgramControl.PACKAGE_NAME).toString().startsWith("."))
                  startPackage = startPackage + programControl.getField(ProgramControl.PACKAGE_NAME).toString();
              else
                  startPackage = programControl.getField(ProgramControl.PACKAGE_NAME).toString();
          }
          if (codeType == CodeType.THIN)
          {
              if (!programControl.getField(ProgramControl.THIN_PACKAGE).isNull())
              {
                  if (programControl.getField(ProgramControl.THIN_PACKAGE).toString().startsWith("."))
                      startPackage = startPackage + programControl.getField(ProgramControl.THIN_PACKAGE).toString();
                  else
                      startPackage = programControl.getField(ProgramControl.THIN_PACKAGE).toString();
              }
              else
                  startPackage = startPackage + ".thin";
          }
          if ((codeType == CodeType.RESOURCE_CODE) || (codeType == CodeType.RESOURCE_PROPERTIES))
          {
              if (!programControl.getField(ProgramControl.RESOURCE_PACKAGE).isNull())
              {
                  if (programControl.getField(ProgramControl.RESOURCE_PACKAGE).toString().startsWith("."))
                      startPackage = startPackage + programControl.getField(ProgramControl.RESOURCE_PACKAGE).toString();
                  else
                      startPackage = programControl.getField(ProgramControl.RESOURCE_PACKAGE).toString();
              }
              else
                  startPackage = startPackage + ".res";
          }
          if (codeType == CodeType.INTERFACE)
          {
              if (!programControl.getField(ProgramControl.INTERFACE_PACKAGE).isNull())
              {
                  if (programControl.getField(ProgramControl.INTERFACE_PACKAGE).toString().startsWith("."))
                      startPackage = startPackage + programControl.getField(ProgramControl.INTERFACE_PACKAGE).toString();
                  else
                      startPackage = programControl.getField(ProgramControl.INTERFACE_PACKAGE).toString();
              }
              else
                  startPackage = startPackage + ".model";
          }
          
          String fullPackage = this.getPath(codeType, true);
          if (fullPackage == null)
              fullPackage = DBConstants.BLANK;
          if ((fullPackage.length() == 0) || (fullPackage.startsWith(".")))
              fullPackage = startPackage + fullPackage;
          if (fullPackage.endsWith("."))
              fullPackage = fullPackage.substring(0, fullPackage.length() - 1);
          if (packageName.startsWith("."))
              packageName = packageName.substring(1);
          
          if (programControlTemp != null)
              programControlTemp.free();
          
          if (fullPackage.length() == 0)
              return packageName;
          else if (packageName.length() == 0)
              return fullPackage;
          return fullPackage + '.' + packageName;
      }