You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: spreadsheetDrawing.go
    path of file: ./repos/unioffice/schema/soo/dml/spreadsheetDrawing
    
    the code of the file until where you have to start completion: //
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/

package spreadsheetDrawing ;import (_b "encoding/xml";_e "fmt";_a "github.com/unidoc/unioffice";_g "github.com/unidoc/unioffice/common/logger";_c "github.com/unidoc/unioffice/schema/soo/dml";_fa "strconv";);func NewEG_Anchor ()*EG_Anchor {_abae :=&EG_Anchor {};
return _abae };func (_fab *CT_GroupShape )UnmarshalXML (d *_b .Decoder ,start _b .StartElement )error {_fab .NvGrpSpPr =NewCT_GroupShapeNonVisual ();_fab .GrpSpPr =_c .NewCT_GroupShapeProperties ();_eca :for {_geg ,_fgg :=d .Token ();if _fgg !=nil {return _fgg ;
};switch _ggfc :=_geg .(type ){case _b .StartElement :switch _ggfc .Name {case _b .Name {Space :"\u0068\u0074\u0074\u0070\u003a\u002f/\u0073\u0063\u0068\u0065\u006da\u0073\u002e\u006f\u0070\u0065\u006ex\u006d\u006c\u0066\u006f\u0072m\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077i\u006e\u0067\u006d\u006c\u002f\u0032\u0030\u0030\u0036\u002f\u0073\u0070\u0072\u0065\u0061d\u0073\u0068\u0065\u0065\u0074\u0044\u0072\u0061w\u0069\u006e\u0067",Local :"\u006ev\u0047\u0072\u0070\u0053\u0070\u0050r"},_b .Name {Space :"\u0068\u0074\u0074\u0070\u003a\u002f\u002fp\u0075\u0072\u006c.\u006f\u0063\u006cc\u002e\u006fr\u0067
    
func (_eaed *CT_GroupShapeChoice )ValidateWithPath (path string )error {for _dbd ,_cdec :=range _eaed .Sp {if _fdg :=_cdec .ValidateWithPath (_e .Sprintf ("\u0025s\u002f\u0053\u0070\u005b\u0025\u0064]",path ,_dbd ));_fdg !=nil {return _fdg ;};};for _ccb ,_adf :=range _eaed .GrpSp {if _ceg :=_adf .ValidateWithPath (_e .Sprintf ("\u0025\u0073\u002fG\u0072\u0070\u0053\u0070\u005b\u0025\u0064\u005d",path ,_ccb ));
_ceg !=nil {return _ceg ;};};for _bdd ,_cbbg :=range _eaed .GraphicFrame {if _fbff :=_cbbg .ValidateWithPath (_e .Sprintf ("\u0025\u0073\u002f\u0047ra\u0070\u0068\u0069\u0063\u0046\u0072\u0061\u006d\u0065\u005b\u0025\u0064\u005d",path ,_bdd ));_fbff !=nil {return _fbff ;
};};for _aad ,_bdg :=range _eaed .CxnSp {if _ggd :=_bdg .ValidateWithPath (_e .Sprintf ("\u0025\u0073\u002fC\u0078\u006e\u0053\u0070\u005b\u0025\u0064\u005d",path ,_aad ));_ggd !=nil {return _ggd ;};};for _bbeb ,_efb :=range _eaed .Pic {if _ecb :=_efb .ValidateWithPath (_e .Sprintf ("\u0025\u0073\u002f\u0050\u0069\u0063\u005b\u0025\u0064\u005d",path ,_bbeb ));
_ecb !=nil {return _ecb ;};};return nil ;};func NewCT_ConnectorNonVisual ()*CT_ConnectorNonVisual {_age :=&CT_ConnectorNonVisual {};_age .CNvPr =_c .NewCT_NonVisualDrawingProps ();_age .CNvCxnSpPr =_c .NewCT_NonVisualConnectorProperties ();return _age ;
};type CT_Connector struct{MacroAttr *string ;FPublishedAttr *bool ;NvCxnSpPr *CT_ConnectorNonVisual ;SpPr *_c .CT_ShapeProperties ;Style *_c .CT_ShapeStyle ;};func NewCT_GroupShapeNonVisual ()*CT_GroupShapeNonVisual {_cdg :=&CT_GroupShapeNonVisual {};
_cdg .CNvPr =_c .NewCT_NonVisualDrawingProps ();_cdg .CNvGrpSpPr =_c .NewCT_NonVisualGroupDrawingShapeProps ();return _cdg ;};func (_bebd *EG_Anchor )MarshalXML (e *_b .Encoder ,start _b .StartElement )error {if _bebd .TwoCellAnchor !=nil {_dee :=_b .StartElement {Name :_b .Name {Local :"\u0078\u0064\u0072\u003a\u0074\u0077\u006f\u0043\u0065\u006c\u006c\u0041n\u0063\u0068\u006f\u0072"}};
e .EncodeElement (_bebd .TwoCellAnchor ,_dee );};if _bebd .OneCellAnchor !=nil {_begf :=_b .StartElement {Name :_b .Name {Local :"\u0078\u0064\u0072\u003a\u006f\u006e\u0065\u0043\u0065\u006c\u006c\u0041n\u0063\u0068\u006f\u0072"}};e .EncodeElement (_bebd .OneCellAnchor ,_begf );
};if _bebd .AbsoluteAnchor !=nil {_gfcc :=_b .StartElement {Name :_b .Name {Local :"\u0078d\u0072:\u0061\u0062\u0073\u006f\u006cu\u0074\u0065A\u006e\u0063\u0068\u006f\u0072"}};e .EncodeElement (_bebd .AbsoluteAnchor ,_gfcc );};return nil ;};func (_edag *CT_ShapeNonVisual )UnmarshalXML (d *_b .Decoder ,start _b .StartElement )error {_edag .CNvPr =_c .NewCT_NonVisualDrawingProps ();
_edag .CNvSpPr =_c .NewCT_NonVisualDrawingShapeProps ();_gbc :for {_cba ,_fegd :=d .Token ();if _fegd !=nil {return _fegd ;};switch _cdac :=_cba .(type ){case _b .StartElement :switch _cdac .Name {case _b .Name {Space :"\u0068\u0074\u0074\u0070\u003a\u002f/\u0073\u0063\u0068\u0065\u006da\u0073\u002e\u006f\u0070\u0065\u006ex\u006d\u006c\u0066\u006f\u0072m\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077i\u006e\u0067\u006d\u006c\u002f\u0032\u0030\u0030\u0036\u002f\u0073\u0070\u0072\u0065\u0061d\u0073\u0068\u0065\u0065\u0074\u0044\u0072\u0061w\u0069\u006e\u0067",Local :"\u0063\u004e\u0076P\u0072"},_b .Name {Space :"\u0068\u0074\u0074\u0070\u003a\u002f\u002fp\u0075\u0072\u006c.\u006f\u0063\u006cc\u002e\u006fr\u0067\u002f\u006f\u006f\u0078\u006dl\u002fdr\u0061\u0077\u0069\u006e\u0067\u006d\u006c\u002f\u0073\u0070\u0072\u0065\u0061\u0064\u0073\u0068\u0065\u0065\u0074\u0044\u0072\u0061\u0077\u0069\u006e\u0067",Local :"\u0063\u004e\u0076P\u0072"}:if _dbbd :=d .DecodeElement (_edag .CNvPr ,&_cdac );
_dbbd !=nil {return _dbbd ;};case _b .Name {Space :"\u0068\u0074\u0074\u0070\u003a\u002f/\u0073\u0063\u0068\u0065\u006da\u0073\u002e\u006f\u0070\u0065\u006ex\u006d\u006c\u0066\u006f\u0072m\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077i\u006e\u0067\u006d\u006c\u002f\u0032\u0030\u0030\u0036\u002f\u0073\u0070\u0072\u0065\u0061d\u0073\u0068\u0065\u0065\u0074\u0044\u0072\u0061w\u0069\u006e\u0067",Local :"\u0063N\u0076\u0053\u0070\u0050\u0072"},_b .Name {Space :"\u0068\u0074\u0074\u0070\u003a\u002f\u002fp\u0075\u0072\u006c.\u006f\u0063\u006cc\u002e\u006fr\u0067\u002f\u006f\u006f\u0078\u006dl\u002fdr\u0061\u0077\u0069\u006e\u0067\u006d\u006c\u002f\u0073\u0070\u0072\u0065\u0061\u0064\u0073\u0068\u0065\u0065\u0074\u0044\u0072\u0061\u0077\u0069\u006e\u0067",Local :"\u0063N\u0076\u0053\u0070\u0050\u0072"}:if _ecgg :=d .DecodeElement (_edag .CNvSpPr ,&_cdac );
_ecgg !=nil {return _ecgg ;};default:_g .Log .Debug ("\u0073\u006bi\u0070\u0070\u0069\u006e\u0067 \u0075\u006e\u0073\u0075\u0070p\u006f\u0072\u0074\u0065\u0064\u0020\u0065\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u006f\u006e\u0020\u0043\u0054\u005f\u0053\u0068\u0061\u0070\u0065\u004e\u006f\u006e\u0056\u0069\u0073\u0075\u0061\u006c\u0020\u0025\u0076",_cdac .Name );
if _ffcb :=d .Skip ();_ffcb !=nil {return _ffcb ;};};case _b .EndElement :break _gbc ;case _b .CharData :};};return nil ;};