protected override void Load()
        {
            Initialize();

            using( var reader = new DotPlainReader( new StreamReader( Filename ) ) )
            {
               var parser = new DotPlainParser( reader );

                parser.Open();

                while( parser.MoveNextEntry( "node" ) )
                {
                    var node = TryAddNode( parser.ReadId() );
                    if( node != null )
                    {
                        var layout = parser.ReadNodeLayout( node.Id );
                        myNodeLayouts.Add( layout );

                        var caption = parser.ReadLabel( node.Id );
                        myCaptions.Add( caption );

                        var style = parser.ReadNodeStyle( node.Id );
                        myNodeStyles.Add( style );
                    }
                }

                while( parser.MoveNextEntry( "edge" ) )
                {
                    var sourceNodeId = parser.ReadId();
                    var targetNodeId = parser.ReadId();

                    var edge = TryAddEdge( sourceNodeId, targetNodeId );
                    if( edge != null )
                    {
                        var layout = parser.ReadEdgeLayout( edge.Id );
                        myEdgeLayouts.Add( layout );

                        // TODO: we should check for labels

                        var style = parser.ReadEdgeStyle( edge.Id );
                        myEdgeStyles.Add( style );
                    }
                }
            }
        }