code: public void init(RecordOwnerParent parent, Rec recordMain, Map<String, Object> properties)
      {
          m_sessionObjectParent = parent;
          if (m_sessionObjectParent != null)
          	m_sessionObjectParent.addRecordOwner(this);
          else if (!this.getClass().getName().endsWith("TaskSession"))
          	Utility.getLogger().warning("Remote Session does not have parent");
  
          if (recordMain == null)
              recordMain = this.openMainRecord(); // No, open it!
          // Now look through the list and see if this query was added, it not, add it!
          boolean bQueryInTable = false;
          if (m_vRecordList != null)
          {
              for (Enumeration<Rec> e = m_vRecordList.elements() ; e.hasMoreElements() ;)
              {   // This should only be called for Imaged GridScreens (Child windows would be deleted by now if Component)
                  Record cQueryInTable = (Record)e.nextElement();
                  if (cQueryInTable == recordMain)
                      bQueryInTable = true;
              }
          }
          if (recordMain != null)
              if (!bQueryInTable)
                  this.addRecord((Record)recordMain, false);
          this.openOtherRecords();    // Open the other files
          if (this.getScreenRecord() == null)
              this.setScreenRecord(this.addScreenRecord());
  
          this.addListeners();        // Add the session behaviors
      }
docs: Initialize the RecordOwner.
  @param parentSessionObject Parent that created this session object.
  @param record Main record for this session (opt).
  @param objectID ObjectID of the object that this SessionObject represents (usually a URL or bookmark).