@Override
	public String getString()
	{
		try
		{
			try
			{
				// Object o= ((Formula) this.getParentRec()).getInternalRecords().get(0);	PARENT REC of ARRAY or SHRFMLA is determined by referent (record) NOT necessarily same as actual Parent Rec
				Boundsheet sht = getParentRec().getSheet();
//	    		Formula pr= (Formula) sht.getCell(this.getReferent());
				Formula f = ((Formula) getParentRec());
				Object o;
				if( f.isSharedFormula() )
				{
					o = FormulaParser.getExpressionString( f.shared.instantiate( f ) );
					if( (o != null) && o.toString().startsWith( "=" ) )
					{
						return o.toString().substring( 1 );
					}
					return o.toString();
				}
				Formula pr = (Formula) sht.getCell( getReferent() );
				o = pr.getInternalRecords().get( 0 );
				if( o instanceof Array )
				{
					Array a = (Array) o;
					return a.getFormulaString();
				}
				if( o instanceof StringRec )
				{
					//if this is a shared formula the attached string is the RESULT, not the formula string itself
					if( ((Formula) getParentRec()).isSharedFormula() )
					{
						throw new IndexOutOfBoundsException( "parse it" );
					}
					StringRec s = (StringRec) o;
					return s.getStringVal();
				}
			}
			catch( IndexOutOfBoundsException e )
			{    // subsequent formulas use same shared formula rec so find
				throw new UnsupportedOperationException( "Shared formulas must be instantiated for calculation" );
			}
		}
		catch( Exception e )
		{
			return "Array-Entered or Shared Formula";
		}
		return "Array-Entered or Shared Formula";
	}