void Main()
        {
            // initialize
            var blocks = new List <IMyTerminalBlock>();

            GridTerminalSystem.GetBlocksOfType <IMyShipController>(blocks, FilterShipController);

            if (blocks.Count == 0)
            {
                throw new Exception("Did not find any cockpit.");
            }

            controller = blocks[0] as IMyShipController;
            debug.Append("use ").Append(controller.CustomName).Append(':').AppendLine();
            debug.Append(controller.HasInventory());
            if (controller.HasInventory())
            {
                for (int i = 0; i < controller.GetInventoryCount(); ++i)
                {
                    IMyInventory inv = controller.GetInventory(i);
                    debug.Append(inv).AppendLine();
                    var items = inv.GetItems();
                    for (int j = 0; j < items.Count; ++j)
                    {
                        debug.Append(items[j].Content).AppendLine();
                    }
                }
            }

            blocks = new List <IMyTerminalBlock>();
            GridTerminalSystem.GetBlocksOfType <IMyTextPanel>(blocks);
            if (blocks.Count == 0)
            {
                return;
            }

            IMyTextPanel text    = blocks[0] as IMyTextPanel;
            var          actions = new List <ITerminalAction>();

            text.GetActions(actions);
            for (int j = 0; j < actions.Count; ++j)
            {
                var action = actions[j];
                debug.Append(action.Id).AppendLine();
            }

            var properties = new List <ITerminalProperty>();

            text.GetProperties(properties);
            for (int j = 0; j < actions.Count; ++j)
            {
                var property = properties[j];
                debug.Append(property.TypeName).Append(" ").Append(property.Id).AppendLine();
            }


            Debug(debug.ToString());
            debug.Clear();
        }