///<overloads>
        /// <summmary>
        /// You can not edit a dependent block(a block that is inside from xref) from the referenced drawing.
        /// The default is not to include dependent blocks since typically you will work on blocks that are contained
        /// inside the drawing, and it saves time by not opening the DbObject and comparing
        /// BlockTableRecord.ObjectId.OriginalDatabase.UnmanagedObject to the BlockTable.Database.UnmanagedObject property.
        /// </summmary>
        /// </overloads>
        /// <summary>
        /// Gets the block table records.
        /// </summary>
        /// <param name="symbolTbl">The symbol table.</param>
        /// <param name="trx">The TRX.</param>
        /// <param name="mode">The mode.</param>
        /// <param name="filter"><see cref="SymbolTableRecordFilter"/>.</param>
        /// <returns>IEnumerable{BlockTableRecord}</returns>

        public static IEnumerable <BlockTableRecord> GetBlockTableRecords(this BlockTable symbolTbl, Transaction trx,
                                                                          OpenMode mode = OpenMode.ForRead, SymbolTableRecordFilter filter = SymbolTableRecordFilter.None)
        {
            if (filter.IsSet(SymbolTableRecordFilter.IncludeDependent))
            {
                return(symbolTbl.GetSymbolTableRecords <BlockTableRecord>(trx, mode, filter, true));
            }
            return(symbolTbl.GetSymbolTableRecords <BlockTableRecord>(trx, mode, filter, true).NonDependent());
        }
 /// <summary>
 /// Gets the user created block table records.
 /// </summary>
 /// <param name="symbolTbl">The symbol table.</param>
 /// <param name="trx">The TRX.</param>
 /// <param name="mode">The mode.</param>
 /// <returns></returns>
 public static IEnumerable <BlockTableRecord> GetUserCreatedBlockTableRecords(this BlockTable symbolTbl,
                                                                              Transaction trx, OpenMode mode = OpenMode.ForRead)
 {
     return
         (symbolTbl.GetSymbolTableRecords <BlockTableRecord>(trx, mode, SymbolTableRecordFilter.None, true)
          .UserCreatedBlocks());
 }